package controllerPackage;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;

import klantPackage.Klant;
import parkeerPackage.ParkeerHuis;
import rapportPackage.Rapport;
import aanbodPackage.Aanbod;
import agendaPackage.Agenda;
import factuurPackage.Factuur;

public class Controller {
	private ArrayList<Rapport> kentRapporten;
	private ParkeerHuis kentParkeerHuis;
	private Agenda kentAgenda;
	
	private ArrayList<Klant> kentAlleKlanten;
	private Aanbod kentHetAanbod;
	private ArrayList<Factuur> kentAlleFacturen;

	public Controller(){
		kentRapporten = new ArrayList<Rapport>();
		kentParkeerHuis = new ParkeerHuis(30);
		kentAgenda = new Agenda();
		kentAlleKlanten = new ArrayList<Klant>();
		kentHetAanbod = new Aanbod();
		kentAlleFacturen = new ArrayList<Factuur>();
		// even wat testgegevens
		// Klanten
		nieuweKlant("Hogenlaan 32", "3323478923", "gert@mail.com",
				"0355268274", "f", "Gert", "Fuhrer", "Huizen");
		nieuweKlant("Waterweg 56", "3465643463", "manuel@mail.com",
				"0355635842", "", "Manuel", "Geefgroet", "Utrecht");
		nieuweKlant("Witlaken 55", "24685335678", "susan@mail.com",
				"0354753686", "", "Susan", "Snoek", "Hilversum");
		// Artikelen
		kentHetAanbod.nieuwArtikel(1, "Nissan wieldop voor type Primera",
				"Nissan wieldop", 49.95);
		kentHetAanbod.nieuwArtikel(2, "Standaard cylinder pakking",
				"Cylinder pakking", 8.95);
		kentHetAanbod.nieuwArtikel(3, "Sony WS3049-R autoradio",
				"Autoradio", 166.95);
		// Diensten
		kentHetAanbod.nieuwDienst(1, "Buitenkant auto wassen",
				20.95, 15.00);
		kentHetAanbod.nieuwDienst(2, "Groot licht vervangen",
				69.95, 25.00);
		kentHetAanbod.nieuwDienst(3, "Voorruit vervangen",
				99.00, 45.00);
		// Afspraken
		Calendar c = Calendar.getInstance();
		Date datum = new Date(c.getTimeInMillis());
		kentAgenda.nieuweAfspraak(1, datum, 45.0, kentHetAanbod.getKentAlleDiensten().get(0), kentAlleKlanten.get(2));
		kentAgenda.nieuweAfspraak(1, datum, 15.0, kentHetAanbod.getKentAlleDiensten().get(1), kentAlleKlanten.get(1));
		kentAgenda.nieuweAfspraak(1, datum, 120.0, kentHetAanbod.getKentAlleDiensten().get(2), kentAlleKlanten.get(0));
	}

	public ArrayList<Rapport> getKentRapporten() {
		return kentRapporten;
	}

	public void setKentRapporten(ArrayList<Rapport> kentRapporten) {
		this.kentRapporten = kentRapporten;
	}

	public ParkeerHuis getKentParkeerHuis() {
		return kentParkeerHuis;
	}

	public void setKentParkeerHuis(ParkeerHuis kentParkeerHuis) {
		this.kentParkeerHuis = kentParkeerHuis;
	}

	public Agenda getKentAgenda() {
		return kentAgenda;
	}

	public void setKentAgenda(Agenda kentAgenda) {
		this.kentAgenda = kentAgenda;
	}

	public ArrayList<Klant> getKentAlleKlanten() {
		return kentAlleKlanten;
	}

	public void setKentAlleKlanten(ArrayList<Klant> kentAlleKlanten) {
		this.kentAlleKlanten = kentAlleKlanten;
	}

	public Aanbod getKentHetAanbod() {
		return kentHetAanbod;
	}

	public void setKentHetAanbod(Aanbod kentHetAanbod) {
		this.kentHetAanbod = kentHetAanbod;
	}

	public ArrayList<Factuur> getKentAlleFacturen() {
		return kentAlleFacturen;
	}

	public void setKentAlleFacturen(ArrayList<Factuur> kentAlleFacturen) {
		this.kentAlleFacturen = kentAlleFacturen;
	}
	
	public ArrayList<Klant> nieuweKlant(String adres, String bsn, String email, 
							String telefoonNummer, String tussenvoegsels,
							String voornaam, String achternaam, String plaats) {
		int hoogsteID = 0, tempID = 0, klantID = 0;
		for(Klant klant : kentAlleKlanten) {
			tempID = klant.getKlantID();
			if(tempID > hoogsteID) { hoogsteID = tempID; }
		}
		klantID = hoogsteID + 1;
		boolean bestaat = false;
		for(Klant klant : kentAlleKlanten){
			if(klant.getBsn().equals(bsn)){
				bestaat = true;
			}
		}
		if(!bestaat){
		kentAlleKlanten.add(new Klant(adres, bsn, email, telefoonNummer,
									tussenvoegsels, voornaam, achternaam, klantID, plaats));
		}
		return kentAlleKlanten;
	}
	
	public ArrayList<Factuur> nieuweFactuur(Factuur f){
		kentAlleFacturen.add(f);
		return kentAlleFacturen;
	}
}
